package com.ms.service.inter;

import com.ms.entity.VolunteerEnroll;

import java.util.List;

/**
 * 志愿者活动报名服务接口
 */
public interface VolunteerEnrollService {
    /**
     * 添加报名记录
     * @param volunteerEnroll 报名信息
     * @return 是否成功
     */
    boolean addVolunteerEnroll(VolunteerEnroll volunteerEnroll);

    /**
     * 根据ID删除报名记录
     * @param enrollId 报名记录ID
     * @return 是否成功
     */
    boolean deleteVolunteerEnrollById(Long enrollId);

    /**
     * 更新报名记录
     * @param volunteerEnroll 报名信息
     * @return 是否成功
     */
    boolean updateVolunteerEnroll(VolunteerEnroll volunteerEnroll);

    /**
     * 根据ID获取报名记录
     * @param enrollId 报名记录ID
     * @return 报名记录
     */
    VolunteerEnroll getVolunteerEnrollById(Long enrollId);

    /**
     * 获取所有报名记录
     * @return 报名记录列表
     */
    List<VolunteerEnroll> getAllVolunteerEnrolls();

    /**
     * 根据志愿者ID获取报名记录
     * @param volunteerId 志愿者ID
     * @return 报名记录列表
     */
    List<VolunteerEnroll> getVolunteerEnrollsByVolunteerId(Long volunteerId);

    /**
     * 根据活动ID获取报名记录
     * @param activityId 活动ID
     * @return 报名记录列表
     */
    List<VolunteerEnroll> getVolunteerEnrollsByActivityId(Long activityId);

    /**
     * 通过报名申请
     * @param enrollId 报名记录ID
     * @return 是否成功
     */
    boolean approveEnroll(Long enrollId);

    /**
     * 取消通过的报名申请
     * @param enrollId 报名记录ID
     * @return 是否成功
     */
    boolean cancelEnroll(Long enrollId);
    
    /**
     * 拒绝报名申请
     * @param enrollId 报名记录ID
     * @return 是否成功
     */
    boolean rejectEnroll(Long enrollId);
    
    /**
     * 根据志愿者ID和活动ID获取特定报名记录
     * @param volunteerId 志愿者ID
     * @param activityId 活动ID
     * @return 报名记录
     */
    VolunteerEnroll getVolunteerEnrollByVolunteerIdAndActivityId(Long volunteerId, Long activityId);
}